A computer system typically includes one or more processors. The computer system employs these one or more processors to execute the processes required to perform the functions desired by the computer's user. Additionally, many computer systems often have to run a large number of different processes. With many processes simultaneously requesting to be executed, the computer system must determine which processes to run based on processor availability and priority of the various processes. The operating system schedules the processes and allocates processor time, often interrupting low priority processes to run processes with a higher priority. In this way the operating system balances the competing needs of various processors to efficiently complete tasks. Some computer systems include only a single processing core, while other computer systems include a plurality of processor cores. Computer systems that include more than one processor core must simultaneous manage scheduling and prioritizing processes across multiple cores.
The operating system has several mechanisms available to it to ensure the most important tasks are executed in a timely manner. In some systems the operating system will regularly determine, based on priority information or other information, the process that should be executed for the next time interval. This allows high priority processes to be executed before lower priority processes complete, even if the lower priority process began before the higher priority process. Additionally, the operating system may generate asynchronous interrupts in response to various criteria being met. Interrupts may be hardware interrupts, in which the interrupt signal is detected by a physical piece of hardware, like an advance programmable interrupt controller, or software interrupts. The kernel, an important component of the operating system, then interrupts the currently executing processes and allows an interrupt handler to execute. In this way, the computer system can respond quickly to various criteria being met.